{% extends "base.html" %}

{% block title %}Python 3 Support on PyPI{% endblock %}

{% block head %}
<script>
jQuery(document).ready(function(){
    $('#tabs').tabs({cache: true});
    $('#accordion').accordion({collapsible: true, active: false,
                               autoHeight: false});
});
</script>
{% endblock %}

{% block body %}
<h1>Python 3 Support on PyPI</h1>

<div id="accordion">
    <h3><a href="#">What is this website about?</a></h3>
<section>
<p>To be recognized as a project compatible with Python 3 on the <a
    href="http://pypi.python.org">Cheeseshop (aka PyPI)</a>,
the project needs to
<a href="http://docs.python.org/py3k/howto/pyporting.html#universal-bits-of-advice">
    set the proper trove classifier</a>.
While
<a href="http://pypi.python.org/pypi?:action=browse&c=533&show=all">some
    projects</a> have done this, others have not. This is rather unfortunate as
this gives off an incorrect measurement of Python 3 support by the community
which some have based previous measurements of support off of.</p>

<p>This website hopes to achieve three things. One, to give the most accurate
portrayal of Python 3 support from the perspective of projects. This is done by
augmenting the list of projects on PyPI that support Python 3 with manual
input. Various metrics are used to measure the most popular projects to try to
give some level of accurate depiction of how Python 3 porting of projects is
going.</p>

<p>Two, to (<i>eventually</i>) provide an API to allow other people to query
what projects do and do not support Python 3. The hope is to allow others who
use other metrics to measure project popularity to accurately portray Python 3
support.</p>

<p>Three, to shame projects into properly setting their trove classifiers. In
an ideal world there would be very little need to manually record if a project
supports Python 3. Beyond forks of projects that have Python 3 support or a
project that has support in their version control system, every project should
be setting their trove classifiers for <b>all</b> versions of Python they
support, major and minor. By using the proper trove classifiers, projects can
easily communicate which versions of Python they do (not) support (e.g.,
setting classifiers for Python 2.5 and 2.6 communicates that a project does not
support Python 2.4 and has not been tested against Python 2.7). Unfortunately a
massive amount of projects do not even set a classifier for a major version of
Python (e.g., Python 2).</p>

<p>There is a <a href="http://dev.pocoo.org/~gbrandl/py3pkgs.png">graph</a>
available which shows the rate of Python 3 support growth on the Cheeseshop.
While this does rely on trove classifiers and thus is somewhat inaccurate, it
still gives a conservative idea of the rate of Python 3 adoption.</p>
</section>

    <h3><a href="#">Legend</a></h3>
<section>
<p class="project"><span class="project py3k_support">Supports Python 3</span></p>
<p class="project"><span class="project unknown_support">Might or might not support Python 3
    (either unknown or support is in the project's version control system)
</span></p>
<p class="project"><span class="project no_support">No support for Python 3</span></p>
<p class="project"><span class="project automatic">Classification automated thanks to trove
    classifiers</span></p>
<p class="project"><span class="project manual">Classification set manually</span></p>
</section>
</div>

<section id="tabs">
<ul>
    <li><a href="/metrics/download_rate"><span>Download rate</span></a></li>
    <li><a href="/metrics/largest_downloads"><span>Largest release</span></a></li>
    <li><a href="/metrics/latest_downloads"><span>Latest release</span></a></li>
    <li><a href="/metrics/poll_count"><span>Poll results</span></a></li>
</ul>
</section>
{% endblock %}
